perm filename OPDECL.SAI[PNT,HE]1 blob sn#331988 filedate 1978-02-23 generic text, type C, neo UTF8
COMMENT āŠ—   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002					REdefine
C00005 ENDMK
CāŠ—;
				REdefine
preload_array(name, defs, type, first, len)"[][]"=[
	preload_with defs null; type array name[first:first+len] ];

				REdefine
preset_array(name, defs, type, first, len) "[][]"=[
	preset_with defs null; type array name[first:first+len] ];

				REdefine

indices(name, postfix)"[][]"=[
    redefine xxcount=1;
    redefine xx(xxarg)=[
	redefine xxtemp= [ define xxarg]&[postfix=xxcount];
	xxtemp;
	redefine xxcount=xxcount+1;];
    name ];

	define op_list "[][]"=[
ZZ("*",	times,	#TERM)
ZZ(".",	dot,		#TERM)
ZZ("REL",	rel,		#TERM)
ZZ("←",	backarrow,	#TERM)
ZZ("/",	divide,	#TERM)
ZZ("+",	Plus,	#EXP)
ZZ("-",	minus,	#EXP)
ZZ("WRT",	WRT,		#TERM)

ZZ("POS",	POS,		#FACTOR)
ZZ("UNIT",	UNIT,	#FACTOR)
ZZ("AXIS",AXIS,	#FACTOR)
ZZ("ORIENT",	ORIENT,	#FACTOR)
ZZ("CONSTRUCT",	CONSTRUCT,	#FACTOR)
ZZ("FRAME",	FRAME,	#FACTOR)
ZZ("VECTOR",	VECTOR,	#FACTOR)
ZZ("TRANS",	TRANS,	#FACTOR)
ZZ("|",	MAGNITUDE,	#FACTOR)
ZZ(["("],	LPAREN,	#FACTOR)
ZZ(["( , , )"],IMPLICIT,	#FACTOR)
ZZ("ROT",	ROT,		#FACTOR)
];

REQUIRE "[][]" DELIMITERS;
REDEFINE ZZ(ARG0,ARG1,ARG2)=[XX(ARG1)];

indices(op_list,_X) ;


DEFINE #EXP=1,#FACTOR=2,#TERM=3 ;
REDEFINE #SC=1,#VT=2,#RT=3,#TR=4,#FR=5,#DTYPE=6;

REDEFINE ZZ(ARG0,ARG1,ARG2)=[ARG0,] ;

preset_array(CODE_OP, OP_LIST,STRING, 1, ROT_X);